package com.jinzhi.jzweb.service.moduleConfig;


import com.jinzhi.common.base.CoreService;
import com.jinzhi.common.utils.Result;
import com.jinzhi.jzweb.domain.moduleConfig.DecryptDO;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;


/*
 *  @author : JingChangTian
 *  @date   : 2024/3/18 14:09
 *  @description :  解密
 *
 */
public interface DecryptService extends CoreService<DecryptDO> {


    /**
     * 导入一次加密信息
     * @param file
     * @param field
     * @return
     */
    Result importExcelDecryptNum1(@RequestParam("file") MultipartFile file, String field);

    /**
     * 导入二次加密信息
     * @param file
     * @param field
     * @return
     */
    Result importExcelDecryptNum2(@RequestParam("file") MultipartFile file, String field);


    /**
     * 修改解密信息
     * @param decryptDO
     * @return
     */
    Result updateDecrypt(DecryptDO decryptDO);

    /**
     * 修改解密信息-一次加密号绑定二次加密号
     * @param decryptDO
     * @return
     */
    Result updateNum1BindNum2Decrypt(DecryptDO decryptDO);

    /**
     * 根据赛场查询已经匹配解密列表
     * @param decryptDO
     * @return
     */
    Result getDecrypt(DecryptDO decryptDO);


    /**
     * 一次二次加密绑定下拉框
     * @param field
     * @return
     */
    Result getBindNum(String field,String status);

    /**
     * 根据赛场查询未匹配解密列表
     * @param decryptDO
     * @return
     */
    Result getAddDecrypt(DecryptDO decryptDO);


    /**
     * 导出根据赛场,类型导出解密信息
     * @param response
     * @param field
     * @param type
     */
    void downloadImportDecrypt(HttpServletResponse response, String field, Integer type);

    /**
     * 根据id删除解密信息
     * @param id
     * @return
     */
    Result deltedDecrypt(Long id,String status);

    /**
     * 根据真实考生id绑定考生一次二次加密
     * @param id
     * @param num1s
     * @param field
     * @return
     */
    Result updateStuCopy(Long id ,String num1s,String field);


    /**
     * 根据考生id+赛场修改加密信息
     * @param id
     * @param num1s
     * @param field
     * @return
     */
    Result updateEncipher(Long id ,String num1s,String field,boolean oneself);

    /**
     * 一键全局解密
     * @return
     */
    Result updateStuDecrypt(String username,String password,String username2,String password2);

    /**
     * 查询没有录分的二次加密号
     * @return
     */
    Result getNum2Init(DecryptDO decryptDO);

    Result<?> resetDecrypt(String field,String unitName);

    /**
     * 一次二次加密绑定重置
     * @return
     */
    Result<?> resetNum1BindNum2Decrypt(String field,Long id);
}
